If this is a first time you visiting Scrolls, please register in Fight Club. If you already registered, please authorize on Fight Club start page with your login and password.
В начале августа 2007 года был примечательный топик Мусорщика Все, что нажито… о мерах по противодействию взломов персонажей. Топик был создан Мусорщиком, но в комментариях в основным принимал участие небезысвестный ангел Security. К сожалению Security давно уже нет вБК...
В комментариях к этой записи я дал несколько своих предложений об увеличении безопасности в БК, даже разгорелась небольшая дискуссия с Security (см. удаленные комментарии). Чтобы мои предложения не оказались похороненными в груде комментариев решил их выложить еще раз, в слегка переработанном виде:
-------------------
Нельзя обеспечить полной безопасности - против каждого аргумента найдется свой антиаргумент. Единственное, что можно сделать - это затруднить выполнение разрушающих действий.
Вот мои мысли на этот счет: 1. Предоставить возможность включать контроль по IP, т.е. предоставить возможность задавать список IP, с которых я могу выполнять все операции. В этом случае, заход с другого IP должен затруднить или запретить следующие действия: - передача, продажа и выкидывание вещей - растрата более 10% от суммы, но не менее 100 кр. - смена настроек, в том числе и пароля. Выполнение этого предложения позволит мне играть с других IP, например, когда я пришел к друзьям. Но несколько затруднит работу мошеннику.
2. Ввод логина отличного от имени персонажа считаю положительным моментом, но не спасающим от перехвата трафика.
3. Переход на защищенные виды авторизации. Сейчас фактически логин и пароль передаются открытым текстом, а значит легко перехватываются. Использование HTTPS при авторизации является наиболее лучшим средством от перехватов. При этом сама игра может проходить по HTTP. Достаточно поставить еще один небольшой сервак, к которому будет обращаться один из скрытых фреймов по HTTPS и в случае необходимости будет производится блокировка сессии.
Одновремнно с этим можно при долгом отсутствии действий клиента (н-р 15 минут) попросить его ввести своий логин и пароль повторно для подтверждения что он продолжает контролировать персонажа.
4. Предлагаю опциональное использование аппаратных средств защиты, например, USB-брелки. Использовать их можно при высокой стоимости персонажа, например, артника. Стоят они в районе $20. Можно придумать механизм их рассылки через диллеров или автоматическая генерация через сайт - это уже детали.
5. Перейти на динамически генерируемые куки. Сейчас куки статические, т.е. они постоянны в течение всей сессии, а значит при перехвате злоумышленник может попытаться повторить сессию. Идея заключается в том, что куки менялись динамически по известным на стороне клиента параметрам. Пример: Сейчас в куках хранится условный номер сессии (battlepsw) ввиде числа. Предположим правилами установлено, что куки должны меняться каждые 5 минут. На стороне клиента стоит фрэйм, который обновляется каждые 5 минут. При обновлении он передает номер текущего battlepsw и предыдущего(-щих) battlepsw. Если они правильные - генерится новый номер battlepsw. Если они неправильные - происходит выход из игры. Соответственно злоумышленнику необходимо перехватить не только текущий battlepsw, который хранится в куках в данный момент, но и предыдущий (предыдущие) battlepsw, которые после смены предлагается хранить в переменных JS Internet Explorer'a (ни в коем случае не в куках!). А это потребует кропотливого мониторинга за жертвой, что не всегда доступно. Увеличение трафика будет составит 100-500 байт каждый 5 минут - смешная цифра.
Одновременно с этим решается проблема с открытием основного окна БК в подокне, например из инфы. Поскольку подокно не знает о номере предыдущей сессии, то попытка открыть основное окно в нем убьет сессию и игрок вылетит из БК.
6. Сделать возможность врменно привязывать вещи к себе. Т.е. примерно такая же привязка, как она есть сейчас, только чтобы игроки сами могли ее ставить и снимать. Для снятия привязки нужен будет некоторый код, например вида md5, который для каждого персонажа должен быть своим.
-------------------
Я могу предположить, что чаще всего перехваты происходят следующими способами
а) использование оставленного подокна БК (н-р, инфа), где легко восстановить основное окно игры; б) перехват куки при отключенном контроле за IP (хотя непонятно как это происходит, ведь номер сессии надо еще знать). в) перехват трафика, где видны логин и пароль (при не установленном втором пароле).
предложения 3) и 5) позволяют значительно (!) снизить риск этих видов перехватов, а именно:
а) подокном не воспользуешься, т.к. не известен предыдущий (предыдущие) номера battlepsw. Их не возьмешь из куков. До них можно добаться только через работу JS (например через ввод jаvаscript:... в адресной строке или внедрением вредоносного кода в игру, что очень затруднительно), либо через мониторинг трафика в течение продолжительного времени. Я не зря старался везде писать в скобках про предыдущие battlepsw. Вполне возможно организовать их хранение в массиве JS и по особому алгоритму их использовать для генерации новых. Это очень сильно затруднит (но не исключит совсем) перехвать контроля.
б) Аналогично п.1), т.к. теперь одних куков не хватит
в) а вот для этого я как раз и предлагал сделать пересылку первого пароля не в открытом виде. Сейчас этот способ перехвата мне представляется самым простым. Поставил трассировку трафика на доступ к http://angelscity.combats.ru/enter.pl в каком-нибудь интернет-клубе. После чего, собрал все пароли, проверил у кого нет второго пароля, вот собственно и все...
Перевести всю игру на него будет не продуктивно, что приведет к потере производительности... Достаточно перевести на HTTPS только один фрейм или только код, который обрабатывает авторизацию и проверку сессии.
> им безопасность персах нах нужна, потерял ты своего, буш > нового качать снова баблишко потечет в игру
согласен если спокойно обдумать, даже поверхностно, основные изменения в БК за некоторое время, то картина представится совершенно безрадостная - акцент на выкачивание денег
Не соглашусь: Если это одиночный взлом - то как правило виноват сам владелец Если взломы принимают массовый характер, то ни кто никакие екры вкладывать не будет.
П.С. По моим наблюдениям в БК одна из лучших систем безопасности среди броузерных игр.